home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 41.zip / BS1 part 41 / vga utildisk 5.adf / m.doc < prev    next >
Text File  |  1988-01-19  |  2KB  |  35 lines

  1. ABSTRACT: The two C files 'producer.c' and 'consumer.c' demonstrate multitasking
  2.           on the Amiga.
  3.  
  4. In the 'real' world the producer/consumer problem is a classical one. It neatly
  5. depicts the problem of two processes (tasks) communicating with each other.
  6.  
  7. Imagine a warehouse where a continuous stream of products is delivered by a
  8. large truck (the producer). The customers (consumers) of this warehouse have 
  9. small trucks in which they collect there goodies. For simplicity let's limit the
  10. number of consumers to one. Now the warehouse happens to have a small parking
  11. place where only one truck at a time (the large one or the small one) can park.
  12. To keep the producer and the consumer satisfied the warehouse will allow them to
  13. park alternatively so the stock doesn't only increase or decrease.
  14.  
  15. Let's translate the problem to software: Of course the producer and consumer
  16. are two separate tasks. The parking place is a message port. The producer
  17. will deliver an item to the message port (a number) and assuming the stock
  18. is full will wait for the consumer to consume the item (just read it). The
  19. consumer will then return an item (another number).
  20.  
  21. The two C programs simulate the above decribed problem. Of course one of
  22. the tasks has to do all initializations, I decided that the producer should
  23. do this. So the core is really small.
  24.  
  25. Compile each file and run the producer and consumer each in it's own window
  26. (start with producer). The producer will send 50 numbers to the consumer by
  27. means of the messages mechanism.
  28.  
  29. I hope these two little programs make the message mechanism on the Amiga more 
  30. familiar to you.
  31.  
  32. Joost Boerhout
  33. Waterigeweg 50
  34. 3703 CP Zeist
  35. the Netherlands